# system_dir = "/Users/jiangyanyu/sciebo/"
# system_dir = "/home/yu.j/sciebo/"
system_dir = "/home/jyu/rstudio/"
working_dir = paste0(system_dir,"/Projects/Katzmarski_mouse_macro_ownerJY/")
published_data_dir = paste0(system_dir,"/general_scripts/publised_datasets/")
global_ref_dir =paste0(system_dir,"/general_scripts/Global_ref_data/")
gsea_pathway_dir = paste0(system_dir,"/general_scripts/Global_ref_data/")
source(paste0(global_ref_dir,"general_functions.R"))
## Loading required package: AnnotationDbi
##
## Attaching package: 'AnnotationDbi'
## The following object is masked from 'package:dplyr':
##
## select
##
##
##
## Registered S3 method overwritten by 'ggtree':
## method from
## identify.gg ggfun
## clusterProfiler v4.2.2 For help: https://yulab-smu.top/biomedical-knowledge-mining-book/
##
## If you use clusterProfiler in published research, please cite:
## T Wu, E Hu, S Xu, M Chen, P Guo, Z Dai, T Feng, L Zhou, W Tang, L Zhan, X Fu, S Liu, X Bo, and G Yu. clusterProfiler 4.0: A universal enrichment tool for interpreting omics data. The Innovation. 2021, 2(3):100141
##
## Attaching package: 'clusterProfiler'
## The following object is masked from 'package:AnnotationDbi':
##
## select
## The following object is masked from 'package:biomaRt':
##
## select
## The following object is masked from 'package:IRanges':
##
## slice
## The following object is masked from 'package:S4Vectors':
##
## rename
## The following object is masked from 'package:stats':
##
## filter
## DOSE v3.20.1 For help: https://yulab-smu.top/biomedical-knowledge-mining-book/
##
## If you use DOSE in published research, please cite:
## Guangchuang Yu, Li-Gen Wang, Guang-Rong Yan, Qing-Yu He. DOSE: an R/Bioconductor package for Disease Ontology Semantic and Enrichment analysis. Bioinformatics 2015, 31(4):608-609
following filtering criteria was applied in the file: Schlitzer_seuratObject_firstExperiment_2020-02-07.RData subset = nFeature_RNA > 500 & nFeature_RNA < 3000 & percent.mt < 10 & percent.Hb < 0.0001
# load(paste(working_dir,"Schlitzer_seuratObject_firstExperiment_2020-02-07.RData",sep=""))
#
# run01_counts = seurat@assays$RNA@counts
# jonas_run01_metadata = seurat@meta.data
#
# run01_seurat = CreateSeuratObject(run01_counts, min.cells = 3, project = "Katzmarski_seurat_run01_allcells", meta.data = seurat@meta.data[,c("sample","status")])
# rm(run01_counts,seurat)
#
# run01_seurat[["percent.mt"]] <- PercentageFeatureSet(run01_seurat, pattern = "^mt-")
# FeatureScatter(run01_seurat,feature1 = "nCount_RNA", feature2 = "nFeature_RNA")
# VlnPlot(run01_seurat,features = c("nCount_RNA","nFeature_RNA","percent.mt"))
# run01_seurat = run01_seurat %>% NormalizeData(., normalization.method = "LogNormalize", scale.factor = 10000) %>% FindVariableFeatures(., selection.method = "vst", nfeatures = 2000) %>% ScaleData(., features = rownames(.)) %>% RunPCA(.,features = VariableFeatures(.), verbose = FALSE) %>% JackStraw(., num.replicate = 100) %>% ScoreJackStraw(., dims = 1:20)
#
# JackStrawPlot(run01_seurat, dims = 1:20)
# ElbowPlot(run01_seurat)
#
# run01_seurat = FindNeighbors(run01_seurat, dims = 1:10)
#
# # set resolution as 0.25 to generate 6 clusters, as same as the output from time series experiment
# run01_seurat = run01_seurat %>% FindClusters(., resolution = 0.25) %>% RunUMAP(., dims=1:10)
#
#
# #UMAP
# run01_seurat <- RunUMAP(run01_seurat,
# dims = 1:30,
# n.neighbors = 30,
# min.dist = 1,
# n.components = 3,
# spread = 3,
# a=1,
# b=0.8)
# saveRDS(run01_seurat,paste(working_dir,"JYu_Run01_reanalysis_20220517.rds"))
run01_seurat = readRDS(paste(working_dir,"JYu_Run01_reanalysis_20220517.rds"))
##1.Combined UMAP of D7 PBS vs. Glucan
ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
# pdf(file = paste0(ms_folder,"1.day7_merged_umap.pdf"),width = 5, height = 4,colormodel="cmyk")
DimPlot(run01_seurat,dims = c(1,2),pt.size=0.3)+
scale_color_manual(values = cluster_color)+
theme_classic()+
labs(subtitle = "Run01_day7_PBSandGLUCAN (10202 cells)")
# dev.off()
rm(ms_folder,cluster_color)
##2.UMAP of D7 PBS
ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
# pdf(file = paste0(ms_folder,"2.day7_pbs_umap.pdf"),width = 5, height = 4,colormodel="cmyk")
DimPlot(subset(run01_seurat,subset=status=="Solvent"),dims = c(1,2),pt.size=0.3)+
scale_color_manual(values = cluster_color)+
theme_classic()+
labs(subtitle = "Run01_day7_PBS (4845 cells)")
# dev.off()
rm(ms_folder,cluster_color)
##3.UMAP of D7 PBS
ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
# pdf(file = paste0(ms_folder,"3.day7_glucan_umap.pdf"),width = 5, height = 4,colormodel="cmyk")
DimPlot(subset(run01_seurat,subset=status=="Glucan"),dims = c(1,2),pt.size=0.3)+
scale_color_manual(values = cluster_color)+
theme_classic()+
labs(subtitle = "Run01_day7_GLUCAN (5357 cells)")
# dev.off()
rm(ms_folder,cluster_color)
##4.barplot by cluster
ns <- table(organ = run01_seurat$status, cell_type = run01_seurat$seurat_clusters)
## remove cluster 1, 5, 6
# ns = ns[,c(1,3,4,5,8)]
fq <- prop.table(ns, 1) * 100
df <- as.data.frame(fq)
ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
df$organ = factor(df$organ,levels = c("Glucan","Solvent"))
library(ggplot2)
# pdf(file = paste0(ms_folder,"4.barplot_by_cluster.pdf"),width = 5, height = 2,colormodel="cmyk")
ggplot(df,aes(x=Freq,y=organ,fill=cell_type,label=cell_type))+
geom_bar(stat="identity",colour="black")+
scale_fill_manual(values=cluster_color)+
theme_classic()+
# geom_text(position = position_stack(vjust = 0.5))+
theme(axis.title=element_blank())
# dev.off()
rm(ns,fq,df,cluster_color,ms_folder)
##5.barplot by cluster
ns <- table(organ = run01_seurat$seurat_clusters, cell_type = run01_seurat$status)
## remove cluster 1, 5, 6
# ns = ns[,c(1,3,4,5,8)]
fq <- prop.table(ns, 1) * 100
df <- as.data.frame(fq)
ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
cluster_color = c("white","#A35884")
# df$organ = factor(df$organ,levels = c("Glucan","Solvent"))
library(ggplot2)
# pdf(file = paste0(ms_folder,"5.barplot_by_condition.pdf"),width = 5, height = 2,colormodel="cmyk")
ggplot(df,aes(x=Freq,y=organ,fill=cell_type,label=cell_type))+
geom_bar(stat="identity",colour="black")+
scale_fill_manual(values=cluster_color)+
theme_classic()+
# geom_text(position = position_stack(vjust = 0.5))+
theme(axis.title=element_blank())
# dev.off()
rm(ns,fq,df,cluster_color,ms_folder)
##5.1 APOE violin
ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
# pdf(file = paste0(ms_folder,"5.1.ApoeViolin.pdf"),width = 4, height = 4,colormodel="cmyk")
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
VlnPlot(run01_seurat,features = c("Apoe"),group.by = "seurat_clusters")+scale_fill_manual(values = cluster_color)
# dev.off()
rm(cluster_color,ms_folder)
##6.DEG Heatmap D7
ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
# pdf(file = paste0(ms_folder,"6.DEG_heatmap_run01.pdf"),width = 6,height = 8)
run01_seurat_deg = FindAllMarkers(run01_seurat,only.pos = FALSE, min.pct = 0.25, logfc.threshold = 0.25)
## Calculating cluster 0
## Calculating cluster 1
## Calculating cluster 2
## Calculating cluster 3
## Calculating cluster 4
DoHeatmap(run01_seurat,
features = run01_seurat_deg %>% group_by(cluster) %>% top_n(n = 10, wt = avg_log2FC) %>% .$gene,
group.colors = cluster_color)+
scale_fill_gradientn(colors = c("blue", "white", "red"))
## Scale for 'fill' is already present. Adding another scale for 'fill', which
## will replace the existing scale.
# dev.off()
##7.UMAP Glucan D0, 7, 21
# ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
#
# cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C","white")
# cell_selected = run02_seurat@meta.data[unlist(tapply(1:nrow(run02_seurat@meta.data),run02_seurat@meta.data$combined_condition,function(x) sample(x,978))),]
# cell_selected = subset(cell_selected,combined_condition!="BAL_Glucan_d14")
#
# # pdf(file = paste0(ms_folder,"7.UMAP_D0_D7_D21_run02.pdf"),width = 12, height = 4,colormodel="cmyk")
# DimPlot(run02_seurat[,rownames(cell_selected)],dims = c(2,3),pt.size=0.3,split.by = "combined_condition")+
# scale_color_manual(values = cluster_color)+
# theme_classic()+
# labs(subtitle = "Run02_glucan (978 cells per condition)")
# # dev.off()
#
# rm(ms_folder,cluster_color)
##8.barplot of gene expressions
SiglecF, ITGAX,, Fapb4, Ear2, Prdx1, Top2a, Mki67, Gpnmb, TREM2, ApoE, ifit2, ifit3, Gbp2
tmp_genes = c("Siglecf", "Itgax", "Fabp4", "Ear2", "Prdx1", "Top2a", "Mki67", "Gpnmb", "Trem2", "Apoe", "Ifit2", "Ifit3", "Gbp2")
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C","white")
ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
# pdf(file = paste0(ms_folder,"8.barplot_of_selected_genes.pdf"),width = 6, height = 2,colormodel="cmyk")
#
# for(i in c(1:length(tmp_genes))){
# tmp_data = cbind(run01_seurat@assays$RNA@data[tmp_genes[i],],run01_seurat@meta.data)
# colnames(tmp_data)[1] = tmp_genes[i]
# tmp_data = tmp_data[order(tmp_data$seurat_clusters),]
#
# p = ggplot(tmp_data,aes(x=c(1:nrow(tmp_data)),y=get(tmp_genes[i]),fill=seurat_clusters))+
# geom_col(width = 1)+
# scale_fill_manual(values = cluster_color)+
# theme_classic()+
# theme(axis.title.x=element_blank(),axis.text.x = element_blank(),axis.ticks.x = element_blank())+
# labs(title = tmp_genes[i],y="Normazlied UMI counts")
#
# print(p)
# }
#
# dev.off()
## save one figure per file
for(i in c(1:length(tmp_genes))){
# pdf(file = paste0(ms_folder,"8.barplot_of_",tmp_genes[i], ".pdf"),width = 6, height = 2,colormodel="cmyk")
tmp_data = cbind(run01_seurat@assays$RNA@data[tmp_genes[i],],run01_seurat@meta.data)
colnames(tmp_data)[1] = tmp_genes[i]
tmp_data = tmp_data[order(tmp_data$seurat_clusters),]
p = ggplot(tmp_data,aes(x=c(1:nrow(tmp_data)),y=get(tmp_genes[i]),fill=seurat_clusters))+
geom_col(width = 1)+
scale_fill_manual(values = cluster_color)+
theme_classic()+
theme(axis.title.x=element_blank(),axis.text.x = element_blank(),axis.ticks.x = element_blank())+
labs(title = tmp_genes[i],y="Normazlied UMI counts")
print(p)
# dev.off()
}
rm(p,tmp_genes, cluster_color, ms_folder, tmp_data,i)
##8.1.violin of gene expressions
SiglecF, ITGAX,, Fapb4, Ear2, Prdx1, Top2a, Mki67, Gpnmb, TREM2, ApoE, ifit2, ifit3, Gbp2
tmp_genes = c("Siglecf", "Itgax", "Fabp4", "Top2a", "Mki67", "Gpnmb", "Apoe", "Ifit2", "Gbp2")
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C","white")
ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
# pdf(file = paste0(ms_folder,"8.1.vlnplot_of_selected_genes.pdf"),width = 4, height = 4,colormodel="cmyk")
for(i in c(1:length(tmp_genes))){
p = VlnPlot(run01_seurat,features = tmp_genes[i],group.by = "seurat_clusters")+scale_fill_manual(values = cluster_color)
print(p)
}
# dev.off()
rm(p,tmp_genes, cluster_color, ms_folder, tmp_data,i)
## Warning in rm(p, tmp_genes, cluster_color, ms_folder, tmp_data, i): object
## 'tmp_data' not found
##10.run02_UMAP
# ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
#
# cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
#
#
# # pdf(file = paste0(ms_folder,"10.run02_merged_umap.pdf"),width = 5, height = 4,colormodel="cmyk")
# tmp_seurat= subset(run02_seurat,subset=seurat_clusters!=5) %>% subset(.,subset=combined_condition!="BAL_Glucan_d14")
#
# DimPlot(tmp_seurat,dims = c(2,3),pt.size=0.3)+
# scale_color_manual(values = cluster_color)+
# theme_classic()+
# labs(subtitle = "Run02_BAL_glucan_D0-D7-D21 (3069 cells)")
# # dev.off()
#
# rm(ms_folder,cluster_color, tmp_seurat)
##11.DEG Heatmap run02
# ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
# cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
# # pdf(file = paste0(ms_folder,"11.DEG_heatmap_run02.pdf"),width = 6,height = 8)
# tmp_seurat= subset(run02_seurat,subset=seurat_clusters!=5) %>% subset(.,subset=combined_condition!="BAL_Glucan_d14")
#
#
# DoHeatmap(tmp_seurat,
# features = run02_seurat_deg %>% subset(.,cluster!=5) %>% group_by(cluster) %>% top_n(n = 10, wt = avg_log2FC) %>% .$gene,
# group.colors = cluster_color)+
# scale_fill_gradientn(colors = c("blue", "white", "red"))
# # dev.off()
#
# rm(ms_folder,cluster_color, tmp_seurat)
##12.QC plots
ms_folder = "/home/yu.j/sciebo/Projects/Katzmarski_mouse_macro_ownerJY/ms_figures_reanalysis20220517/"
cluster_color = c("#3A3A3C","#A9DDD9","#0E7D63","#A35884","#EEBA4C")
# pdf(file = paste0(ms_folder,"12.1.QC_for_run01.pdf"),width = 12,height = 4)
VlnPlot(run01_seurat,features = c("nCount_RNA","nFeature_RNA","percent.mt"),group.by = "seurat_clusters")+scale_fill_manual(values = cluster_color)
# dev.off()
sessionInfo()
## R version 4.1.3 (2022-03-10)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.4 LTS
##
## Matrix products: default
## BLAS/LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.8.so
##
## locale:
## [1] C
##
## attached base packages:
## [1] grid splines stats4 stats graphics grDevices utils
## [8] datasets methods base
##
## other attached packages:
## [1] DOSE_3.20.1 clusterProfiler_4.2.2
## [3] org.Mm.eg.db_3.14.0 org.Hs.eg.db_3.14.0
## [5] AnnotationDbi_1.56.2 biomaRt_2.50.3
## [7] AUCell_1.16.0 ComplexHeatmap_2.10.0
## [9] edgeR_3.36.0 limma_3.50.3
## [11] monocle_2.22.0 DDRTree_0.1.5
## [13] irlba_2.3.5 VGAM_1.1-6
## [15] Matrix_1.4-1 monocle3_1.2.9
## [17] SingleCellExperiment_1.16.0 SummarizedExperiment_1.24.0
## [19] GenomicRanges_1.46.1 GenomeInfoDb_1.30.1
## [21] IRanges_2.28.0 S4Vectors_0.32.4
## [23] MatrixGenerics_1.6.0 matrixStats_0.62.0
## [25] Biobase_2.54.0 BiocGenerics_0.40.0
## [27] ggpubr_0.4.0 tidyr_1.2.0
## [29] magrittr_2.0.3 dplyr_1.0.9
## [31] sp_1.5-0 SeuratObject_4.1.0
## [33] Seurat_4.1.1 ggplot2_3.3.6
##
## loaded via a namespace (and not attached):
## [1] rappdirs_0.3.3 scattermore_0.8 R.methodsS3_1.8.2
## [4] bit64_4.0.5 knitr_1.39 DelayedArray_0.20.0
## [7] R.utils_2.11.0 data.table_1.14.2 rpart_4.1.16
## [10] KEGGREST_1.34.0 RCurl_1.98-1.7 doParallel_1.0.17
## [13] generics_0.1.2 terra_1.5-34 cowplot_1.1.1
## [16] RSQLite_2.2.14 shadowtext_0.1.2 RANN_2.6.1
## [19] combinat_0.0-8 future_1.26.1 enrichplot_1.14.2
## [22] bit_4.0.4 spatstat.data_2.2-0 xml2_1.3.3
## [25] httpuv_1.6.5 assertthat_0.2.1 viridis_0.6.2
## [28] xfun_0.31 hms_1.1.1 jquerylib_0.1.4
## [31] evaluate_0.15 promises_1.2.0.1 fansi_1.0.3
## [34] progress_1.2.2 dbplyr_2.2.0 igraph_1.3.2
## [37] DBI_1.1.3 htmlwidgets_1.5.4 sparsesvd_0.2
## [40] spatstat.geom_2.4-0 purrr_0.3.4 ellipsis_0.3.2
## [43] backports_1.4.1 annotate_1.72.0 deldir_1.0-6
## [46] vctrs_0.4.1 ROCR_1.0-11 abind_1.4-5
## [49] cachem_1.0.6 withr_2.5.0 ggforce_0.3.3
## [52] progressr_0.10.1 sctransform_0.3.3 treeio_1.18.1
## [55] prettyunits_1.1.1 goftest_1.2-3 cluster_2.1.2
## [58] ape_5.6-2 lazyeval_0.2.2 crayon_1.5.1
## [61] labeling_0.4.2 pkgconfig_2.0.3 slam_0.1-50
## [64] tweenr_1.0.2 vipor_0.4.5 nlme_3.1-158
## [67] rlang_1.0.2 globals_0.15.1 lifecycle_1.0.1
## [70] miniUI_0.1.1.1 downloader_0.4 filelock_1.0.2
## [73] BiocFileCache_2.2.1 ggrastr_1.0.1 polyclip_1.10-0
## [76] lmtest_0.9-40 graph_1.72.0 aplot_0.1.6
## [79] carData_3.0-5 boot_1.3-28 zoo_1.8-10
## [82] beeswarm_0.4.0 ggridges_0.5.3 GlobalOptions_0.1.2
## [85] pheatmap_1.0.12 png_0.1-7 viridisLite_0.4.0
## [88] rjson_0.2.21 bitops_1.0-7 R.oo_1.25.0
## [91] KernSmooth_2.23-20 Biostrings_2.62.0 blob_1.2.3
## [94] shape_1.4.6 qvalue_2.26.0 stringr_1.4.0
## [97] parallelly_1.32.0 spatstat.random_2.2-0 gridGraphics_0.5-1
## [100] rstatix_0.7.0 ggsignif_0.6.3 scales_1.2.0
## [103] memoise_2.0.1 GSEABase_1.56.0 plyr_1.8.7
## [106] ica_1.0-2 zlibbioc_1.40.0 scatterpie_0.1.7
## [109] compiler_4.1.3 HSMMSingleCell_1.14.0 RColorBrewer_1.1-3
## [112] clue_0.3-61 lme4_1.1-29 fitdistrplus_1.1-8
## [115] cli_3.3.0 XVector_0.34.0 listenv_0.8.0
## [118] patchwork_1.1.1 pbapply_1.5-0 MASS_7.3-57
## [121] mgcv_1.8-39 tidyselect_1.1.2 stringi_1.7.6
## [124] highr_0.9 densityClust_0.3.2 GOSemSim_2.20.0
## [127] yaml_2.3.5 locfit_1.5-9.5 ggrepel_0.9.1
## [130] sass_0.4.1 fastmatch_1.1-3 tools_4.1.3
## [133] future.apply_1.9.0 parallel_4.1.3 circlize_0.4.15
## [136] rstudioapi_0.13 foreach_1.5.2 gridExtra_2.3
## [139] farver_2.1.0 Rtsne_0.16 ggraph_2.0.5
## [142] digest_0.6.29 BiocManager_1.30.18 rgeos_0.5-9
## [145] FNN_1.1.3.1 shiny_1.7.1 qlcMatrix_0.9.7
## [148] Rcpp_1.0.8.3 car_3.1-0 broom_0.8.0
## [151] later_1.3.0 RcppAnnoy_0.0.19 httr_1.4.3
## [154] colorspace_2.0-3 XML_3.99-0.10 tensor_1.5
## [157] reticulate_1.25 yulab.utils_0.0.4 uwot_0.1.11
## [160] tidytree_0.3.9 spatstat.utils_2.3-1 graphlayouts_0.8.0
## [163] ggplotify_0.1.0 plotly_4.10.0 xtable_1.8-4
## [166] ggtree_3.2.1 jsonlite_1.8.0 nloptr_2.0.3
## [169] tidygraph_1.2.1 ggfun_0.0.6 R6_2.5.1
## [172] pillar_1.7.0 htmltools_0.5.2 mime_0.12
## [175] BiocParallel_1.28.3 glue_1.6.2 fastmap_1.1.0
## [178] minqa_1.2.4 codetools_0.2-18 fgsea_1.20.0
## [181] utf8_1.2.2 lattice_0.20-45 bslib_0.3.1
## [184] spatstat.sparse_2.1-1 tibble_3.1.7 ggbeeswarm_0.6.0
## [187] curl_4.3.2 leiden_0.4.2 GO.db_3.14.0
## [190] survival_3.3-1 rmarkdown_2.14 docopt_0.7.1
## [193] fastICA_1.2-3 munsell_0.5.0 DO.db_2.9
## [196] GetoptLong_1.0.5 GenomeInfoDbData_1.2.7 iterators_1.0.14
## [199] reshape2_1.4.4 gtable_0.3.0 spatstat.core_2.4-4